package com.jhy.suixianglu.daima20221210;

/**
 * 2022年12月10日12:31:10
 * 你一个按 非递减顺序 排序的整数数组 nums，
 * 返回 每个数字的平方 组成的新数组，要求也按 非递减顺序 排序。
 */
public class Square {
    public int[] sortedSquares(int[] nums) {
        // 因为这个数组一开始就是非递减顺序 故平方之后
        // 最大要么在左边要么在右边
        // 故我们可以使用双指针进行操作
        int l = 0;
        int r = nums.length - 1;
        // 从最后的位置开始进行填充 TODO 这是之前的问题所在 2022年12月10日14:23:11
        int n = nums.length-1;
        int[] res = new int[nums.length];
        while (l <= r) {
            if (nums[l] * nums[l] < nums[r] * nums[r]) {
                res[n--] = nums[r]*nums[r];
                r--;
            } else {
                res[n--] = nums[l]*nums[l];
                l++;
            }
        }
        return res;
    }
}
